package com.beiyou.controller;

import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNodeConfig;
import cn.hutool.core.lang.tree.TreeUtil;
import com.beiyou.dto.*;
import com.beiyou.local.UserInfoLocal;
import com.beiyou.service.GoodsService;
import com.beiyou.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * @author wzby
 * @Date: 2022/10/21 10:13
 */
@RestController
@RequestMapping("/api/product")
public class ProductController {
    @Autowired
    private ProductService productService;

    @PostMapping
    public Integer insert(@RequestBody ProductDto productDto){
        System.out.println("28:->"+Thread.currentThread().getName());
        UserInfo userInfo = UserInfoLocal.get();
        productDto.setLastUpdateBy(userInfo.getNickName());
        return productService.insert(productDto);
    }

    @GetMapping
    //查询所有
    public List<ProductDto> selectXml(ProductDtoQuery productDtoQuery){
       return productService.selectXml(productDtoQuery);
    }

    @PatchMapping
    public Integer statusUpdate(@RequestBody Map<String,Integer> map){
        Integer id = map.get("id");
        Integer status = map.get("status");
        return productService.statusUpdate(id,status);
    }

    @PutMapping
    public Integer update(@RequestBody ProductDto productDto){
        UserInfo userInfo = UserInfoLocal.get();
        productDto.setLastUpdateBy(userInfo.getNickName());
        return productService.update(productDto);
    }

//    @GetMapping("/{id}")
//    public ProductDto selectOne(@PathVariable Integer id){
//        ProductDtoQuery productDtoQuery = new ProductDtoQuery();
//        productDtoQuery.setId(id);
//        return productService.select(productDtoQuery).get(0);
//    }
//
//    @GetMapping("tree")
//    public  List<Tree<Integer>> select(){
//        List<ProductDto> productDtos = productService.select(new ProductDtoQuery());
//        //配置
//        TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
//        // 自定义属性名 都要默认值的
//        treeNodeConfig.setWeightKey("seq");
//        treeNodeConfig.setIdKey("id");
//        // 最大递归深度
//        treeNodeConfig.setDeep(2);
//        //转换器
//        List<Tree<Integer>> treeNodes = TreeUtil.build(productDtos, 0, treeNodeConfig,
//                (treeNode, tree) -> {
//                    tree.setId(treeNode.getId());
//                    tree.setParentId(treeNode.getGoodsId());
//                    tree.setWeight(treeNode.getSeq());
//                    tree.setName(treeNode.getName());
//                    // 扩展属性 ...
//                    tree.putExtra("value", treeNode.getId());
//                    tree.putExtra("label", treeNode.getName());
//                });
//        return treeNodes;
//    }
}
